package org.jsola.hr.web;

import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import org.jsola.core.Page;
import org.jsola.core.Result;
import org.jsola.hr.dto.FormGroupFieldValueAddDTO;
import org.jsola.hr.dto.FormGroupFieldValueBatchDTO;
import org.jsola.hr.dto.FormGroupFieldValueUpdateDTO;
import org.jsola.hr.query.FormGroupFieldValueQuery;
import org.jsola.hr.vo.FormGroupFieldValueListVO;
import org.jsola.hr.vo.FormGroupFieldValueVO;

import java.util.List;

/**
 * 自定义字段存值
 *
 * @author zhr
 */
@Api(tags = "hr-自定义字段存值")
public interface IFormGroupFieldValueControllerAPI {

    /**
     * 新增自定义字段存值
     * @param formGroupFieldValueAddDTO 自定义字段存值新增实体
     * @return 自定义字段存值展示对象
     */
    @ApiOperation(value = "新增自定义字段存值")
    @ApiImplicitParams({
            @ApiImplicitParam(name = "formGroupFieldValueAddDTO", dataType = "FormGroupFieldValueAddDTO", value = "新增自定义字段存值", paramType = "body")
    })
    Result<FormGroupFieldValueVO> save(FormGroupFieldValueAddDTO formGroupFieldValueAddDTO);


    /**
     * 修改自定义字段存值
     * @param formGroupFieldValueUpdateDTO 自定义字段存值
     * @return 更新数量
     */
    @ApiOperation(value = "修改自定义字段存值")
    @ApiImplicitParams({
            @ApiImplicitParam(name = "formGroupFieldValueUpdateDTO", dataType = "FormGroupFieldValueUpdateDTO", value = "修改自定义字段存值", paramType = "body")
    })
    Result<Integer> update(FormGroupFieldValueUpdateDTO formGroupFieldValueUpdateDTO);

    /**
     * 批量编辑、新增、删除自定义字段存值
     * @param formGroupFieldValueBatchDTO 要操作的自定义字段存值
     * @return 操作之后的全部自定义字段存值
     */
    @ApiOperation(value = "批量编辑、新增、删除自定义字段存值")
    @ApiImplicitParams({
            @ApiImplicitParam(name = "formGroupFieldValueBatchDTO", dataType = "FormGroupFieldValueBatchDTO", value = "要操作的字段数据", paramType = "body")
    })
    Result batch(FormGroupFieldValueBatchDTO formGroupFieldValueBatchDTO);



    /**
     * 删除单个自定义字段存值，彻底删除
     * @param formGroupFieldValueId 自定义字段存值id
     * @return 删除数量
     */
    @ApiOperation(value="删除单个自定义字段存值，彻底删除")
    @ApiImplicitParams({
            @ApiImplicitParam(name = "formGroupFieldValueId", dataType = "Long", value = "自定义字段存值id", paramType = "path")
    })
    Result<Integer> delete(Long formGroupFieldValueId);


    /**
     * 批量删除自定义字段存值，彻底删除
     * @param formGroupFieldValueIds 自定义字段存值id集合
     * @return 删除数量
     */
    @ApiOperation(value = "批量删除自定义字段存值，彻底删除")
    @ApiImplicitParams({
            @ApiImplicitParam(name = "formGroupFieldValueIds", dataType = "Long[]", value = "自定义字段存值id数组", paramType = "body" ,allowMultiple = true)
    })
    Result<Integer> deleteBatch(Long[] formGroupFieldValueIds);


    /**
     * 根据自定义字段存值id查询自定义字段存值详情
     * @param formGroupFieldValueId 自定义字段存值id
     * @return 自定义字段存值详情
     */
    @ApiOperation(value="根据自定义字段存值id查询自定义字段存值详情")
    @ApiImplicitParams({
            @ApiImplicitParam(name = "formGroupFieldValueId", dataType = "Long", value = "自定义字段存值id", paramType = "path")
    })
    Result<FormGroupFieldValueVO> findById(Long formGroupFieldValueId);


    /**
     * 查询自定义字段存值
     * @param formGroupFieldValueQuery 自定义字段存值查询参数
     * @return page
     */
    @ApiOperation(value="查询自定义字段存值")
    @ApiImplicitParams({
            @ApiImplicitParam(name = "formGroupFieldValueQuery", dataType = "FormGroupFieldValueQuery", value = "自定义字段存值查询参数", paramType = "query")
    })
    Result<List<FormGroupFieldValueListVO>> listAll(FormGroupFieldValueQuery formGroupFieldValueQuery);


     /**
     * 分页查询自定义字段存值
     * @param formGroupFieldValueQuery 自定义字段存值查询参数
     * @return page
     */
    @ApiOperation(value="分页查询自定义字段存值")
    @ApiImplicitParams({
            @ApiImplicitParam(name = "formGroupFieldValueQuery", dataType = "FormGroupFieldValueQuery", value = "自定义字段存值查询参数", paramType = "query")
    })
    Result<Page<FormGroupFieldValueListVO>> page(FormGroupFieldValueQuery formGroupFieldValueQuery);


}

